[BE] SISC1-52 [FIX] 베팅 게임 버그 수정#74
Hidden character warning
Conversation
WalkthroughSpring 스케줄링 지원을 활성화하고, 베팅 요청의 스테이크 포인트 검증 로직을 재구성했습니다. @min 제약 조건을 제거하고 커스텀 유효성 검사 메서드로 대체하며, 서비스 레벨에서 검증을 수행하고 새로운 오류 코드를 추가했습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Controller
participant Service as BettingService
participant Validator as Validator
participant Repo as Repository
participant PointService as PointService
User->>Controller: postUserBet(UserBetRequest)
activate Controller
Controller->>Validator: validate(request)
activate Validator
Validator->>Validator: isStakePointsValid()
Note over Validator: Checks: free OR<br/>(stakePoints != null AND >= 10)
alt Validation Fails
Validator-->>Controller: ConstraintViolation
Controller-->>User: 400 Bad Request
else Validation Passes
Validator-->>Controller: Valid
end
deactivate Validator
Controller->>Service: postUserBet(request)
activate Service
alt Not Free Bet
Service->>Service: Check isStakePointsValid()
alt Invalid Stake Points
Service-->>Controller: BET_POINT_TOO_LOW Exception
Controller-->>User: 409 Conflict
else Valid Stake Points
Service->>PointService: Deduct points
Service->>Repo: Create point history
Service->>Repo: Save bet
Service-->>Controller: Success
end
else Free Bet
Service->>Repo: Save bet
Service-->>Controller: Success
end
deactivate Service
deactivate Controller
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
backend/src/main/java/org/sejongisc/backend/betting/dto/UserBetRequest.java (1)
5-5: 사용하지 않는 import를 제거해주세요.
@Min어노테이션이 제거되었으므로jakarta.validation.constraints.Minimport도 더 이상 필요하지 않습니다.다음 diff를 적용하여 미사용 import를 제거하세요:
-import jakarta.validation.constraints.Min;
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
backend/src/main/java/org/sejongisc/backend/BackendApplication.java(1 hunks)backend/src/main/java/org/sejongisc/backend/betting/dto/UserBetRequest.java(2 hunks)backend/src/main/java/org/sejongisc/backend/betting/service/BettingService.java(1 hunks)backend/src/main/java/org/sejongisc/backend/common/exception/ErrorCode.java(1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
backend/src/main/java/org/sejongisc/backend/betting/service/BettingService.java (3)
backend/src/test/java/org/sejongisc/backend/betting/service/BettingServiceTest.java (5)
freeReq(315-322)paidReq(306-313)Test(369-379)Test(440-453)BettingServiceTest(30-480)backend/src/test/java/org/sejongisc/backend/betting/service/BettingServiceTransactionalTest.java (1)
Test(48-79)backend/src/main/java/org/sejongisc/backend/betting/entity/UserBet.java (1)
Entity(12-54)
🔇 Additional comments (3)
backend/src/main/java/org/sejongisc/backend/common/exception/ErrorCode.java (1)
68-69: 새로운 에러 코드 추가가 적절합니다.enum 구문이 올바르게 수정되었고,
BET_POINT_TOO_LOW에러 코드가 명확한 메시지와 함께 추가되었습니다. CONFLICT 상태는 비즈니스 규칙 위반에 적합합니다.backend/src/main/java/org/sejongisc/backend/betting/dto/UserBetRequest.java (1)
30-33: 검증 로직이 비즈니스 요구사항을 올바르게 반영합니다.커스텀 검증 메서드가 무료 베팅과 유료 베팅을 적절히 구분하여 처리합니다. null 체크도 포함되어 있어 안전합니다.
backend/src/main/java/org/sejongisc/backend/BackendApplication.java (1)
7-9: @EnableScheduling은 베팅 스케줄러에 필요합니다.검증 결과,
BettingScheduler.java에 4개의@Scheduled메서드가 존재합니다:
dailyOpenScheduler()/weeklyOpenScheduler(): 베팅 라운드 생성 (매일 9시, 월요일 9시)dailyCloseScheduler()/weeklyCloseScheduler(): 베팅 라운드 종료 (평일 22시, 금요일 22시)
@EnableScheduling어노테이션은 이러한 스케줄된 작업들이 실제로 동작하기 위해 필수입니다. 따라서 이 추가는 베팅 시스템의 핵심 기능과 직접 관련이 있으며, 정당합니다.Likely an incorrect or invalid review comment.
Summary by CodeRabbit